
#pragma once

#include "ParameterManager.h"

namespace ttg_internal
{
	namespace utils
	{
		///<summary>
		/// Public wrapper for ParameterManager.
		/// Provides the same functionality.
		///</summary>
		public ref class ParameterTree
		{
			public:
				///<summary>
				/// Locks parameter tree (to avoid its modification).
				/// Note: real values of parameters can be changed!
				///</summary>
				void Lock()
				{ ParameterManager::getRef()->lock(); }
				///<summary>
				/// UnLocks parameter tree.
				///</summary>
				void UnLock()
				{ ParameterManager::getRef()->unLock(); }
				///<summary>
				/// Returns root of the tree.
				///</summary>
				property ParameterSet ^Root
				{
					ParameterSet ^get()
					{ return ParameterManager::getRef()->Root; }
				}
		};
	}
}
